让ie低版本支持CSS3 Media Query

前言

现在响应式开发无疑是在工作当中很必要的,但是众从周知IE系列的兼容性是不敢恭维的,下面大家就来认识一下Respond.js来解决你的苦恼吧。
Bootstrap里面就引入了这个js文件,从名字很显然可以看出来是自适应的兼容。打开IE看了一下,效果挺好的,自适应的效果挺好的。Respond.js让不支持CSS3 Media Query的浏览器包括IE6-IE8等其他浏览器支持查询。

原理:

  • 1.把head中所有的的css路径取出来放入数组
  • 2.然后遍历数组一个个发ajax请求
  • 3.ajax回调后仅分析response中的media query的min-width和max- width语法,分析出viewport变化区间对应相应的css块
  • 4.页面初始化时和window.resize时,根据当前viewport使用相应的css块。
    使用:考虑到IE9是支持CSS3的,所以直接在HTML页面的head标签中添加脚本引用即可:
1
2
3
`<!--[if lt IE 9]>`
<script src="http://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
<![endif]—>

使用方式

  • 官方demo地址:http://scottjehl.github.com/Respond/test/test.html
  • 1.在css中正常用 min/max-width media queries
1
2
3
@media screen and (min-width: 480px){
...styles for 480px and up go here
}
  • 2.引入respond.min.js,但要在css的后面(越早引入越好,在ie下面看到页面闪屏的概率就越低,因为最初css会先渲染出来,如果respond.js加载得很后面,这时重新根据media query解析出来的css会再改变一次页面的布局等,所以看起来有闪屏的现象)

更多了解可以参考http://caibaojian.com/respondjs.html